'use strict'
/**
成员管理
*/
let urljoin = require("url-join"),
	_ = require("lodash"),
	template = require("es6-template-strings"),
	log4js = require('log4js'),
	logger = log4js.getLogger('qywx-api'),
	debug = require('debug')('qywx-api'),
	rp = require("request-promise"),
	URLs = require('./urls.js').URLs();

module.exports = function() {
	return {
		/**
      * [get 获取临时素材]
		参数	必须	说明
			access_token	是	调用接口凭证
			media_id	是	媒体文件id
      */
		getMedia: function(accessToken, media_id,cb) {
				let targetUrl =
					template(URLs.CONTACTS_MEDIA_GET, {
						accessToken: accessToken
					});
				debug("获取临时素材:", targetUrl);
				let requestData = {
					accessToken: accessToken,
					media_id: media_id
				};
				var rpOptions = {
					uri: targetUrl,
					method: "GET",
					qs: requestData,
					json: true
				};

				rp(rpOptions).then(function(data) {
						if (data.errcode > 0) {
							logger.error("request error: ", data);
							return cb(new Error(data.errmsg));
						}
						return cb(null, data);
					})
					.catch(function(err) {
						logger.error("request error: ", err);
						return cb(err);
					});


			}
			/**
			上传临时素材
			params{
			  参数	必须	说明
			  access_token	是	调用接口凭证
			  type	是	媒体文件类型，分别有图片（image）、语音（voice）、视频（video），普通文件(file)
			  media	是	form-data中媒体文件标识，有filename、filelength、content-type等信息
			}
			*/
			,
		uploadMedia: function(accessToken, type, media, cb) {
			let targetUrl =
				template(URLs.CONTACTS_MEDIA_UPLOAD, {
					accessToken: accessToken
				});
			debug("上传临时素材:", targetUrl);
			let requestData = {
				accessToken: accessToken,
				type: type,
				media: media
			};
			var rpOptions = {
				uri: targetUrl,
				method: "POST",
				body: requestData,
				json: true
			};
			/**返回说明
			{
			     "type": "image",
			     "media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0",
			     "created_at": "1380000000"
			  }
			  参数	说明
			  type	媒体文件类型，分别有图片（image）、语音（voice）、视频（video）,普通文件(file)
			  media_id	媒体文件上传后获取的唯一标识
			  created_at	媒体文件上传时间戳

			  上传的媒体文件限制:
			  所有文件size必须大于5个字节
			  图片（image）:2MB，支持JPG,PNG格式
			  语音（voice）：2MB，播放长度不超过60s，支持AMR格式
			  视频（video）：10MB，支持MP4格式
			  普通文件（file）：20MB
			 */
			rp(rpOptions).then(function(data) {
					if (data.errcode > 0) {
						logger.error("request error: ", data);
						return cb(new Error(data.errmsg));
					}
					return cb(null, data);
				})
				.catch(function(err) {
					logger.error("request error: ", err);
					return cb(err);
				});



		}


	}

}